import { login } from "@/api/user"

const userModule = {
  state: {
    token: null,
    userInfo: null,
  },
  getters: {
    token: state => state.token,
    userInfo: state => state.userInfo,
  },
  mutations: { // 同步更新状态数据
    /**
     * 用户登录成功，保存登录状态数据
     * @param {*} state 
     * @param {*} payload 
     */
    loginSuccess(state, payload) {
      state.token = payload.token
      state.userInfo = payload.userInfo
    },

    /**
     * 重置用户登录状态数据
     * @param {*} state 
     */
    reset(state) {
      state.token = null
      state.userInfo = null
    },
  },
  actions: { 
    /**
     * 用户登录，处理登录后的用户状态数据
     * @param {*} context 
     * @param {*} payload 
     */
    async loginAction(context, payload) {
      try { 
        const result = await login(payload)
        console.log('result:', result)
        if (result.status === 200) { // 登录成功
          context.commit('loginSuccess', result)
          return true
        } else { // 登录失败
          context.commit('reset')
          return false
        }
      } catch (error) { // catch 语句块中是出现异常后捕获处理异常的代码
        // 出现异常，则重置用户登录状态数据
        context.commit('reset')
        return false
      }
    },
  },
}

export default userModule
